/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package be.cultuurschuur.services;

import be.cultuurschuur.entity.*;
import be.cultuurschuur.interfaces.*;
import java.io.*;
import java.util.*;
import java.util.logging.*;
import javax.faces.context.*;
import javax.persistence.*;

/**
 *
 * @author Webbie
 */
public class BLVervoer implements VervoerInterface
{
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("cultuurschuurPU");
    EntityManager em = emf.createEntityManager();
    EntityTransaction tx = em.getTransaction();
    
    private String vervoerswijze;

    public String getVervoerswijze() {
        return vervoerswijze;
    }

    public void setVervoerswijze(String vervoerswijze) {
        this.vervoerswijze = vervoerswijze;
    }
    
    @Override
    public Vervoer insertVervoer()
    {
        tx.begin();
        Vervoer vervoer = new Vervoer();
        vervoer.setVervoerswijze(vervoerswijze);
        
        em.persist(vervoer);
        tx.commit();
        try {
            FacesContext.getCurrentInstance().getExternalContext().redirect("vervoer.xhtml");
        } catch (IOException ex) {
            Logger.getLogger(be.cultuurschuur.Controllers.VervoerController.class.getName()).log(Level.SEVERE, null, ex);
        }
        return vervoer;
    }
    
    @Override
    public List<Vervoer> getVervoeren()
    {
        return em.createNamedQuery("Vervoer.getAll").getResultList();
    }
    @Override
    public Vervoer getVervoerById(int id)
    {
        Query q = em.createNamedQuery("Vervoer.getById");
        q.setParameter(1, id);
        Vervoer vervoer = (Vervoer)q.getSingleResult();
        return vervoer;
    }
    @Override
    public Vervoer updateVervoer(Vervoer vervoer)
    {
        tx.begin();

        Vervoer v = em.find(Vervoer.class, vervoer.getId());
        v.setVervoerswijze(vervoer.getVervoerswijze());
        
        em.persist(v);

        tx.commit();
        return v;
    }
    @Override
    public boolean deleteVervoer(int id)
    {
        try {
            tx.begin();

            Vervoer v = em.find(Vervoer.class, id);
            em.remove(v);
            tx.commit();
            return true;
        } catch (Exception exc) {
            return false;
        }
    }
}
